home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Musik / Misc / Amster / Source / amster_Cat.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-01  |  25.3 KB  |  734 lines

  1. /****************************************************************
  2.    This file was created automatically by `FlexCat 2.4'
  3.    from "locale/Amster.cd".
  4.  
  5.    Do NOT edit by hand!
  6. ****************************************************************/
  7.  
  8. /****************************************************************
  9.     This file uses the auto initialization possibilities of
  10.     Dice, gcc and SAS/C, respectively.
  11.  
  12.     Dice does this by using the keywords __autoinit and
  13.     __autoexit, SAS uses names beginning with _STI or
  14.     _STD, respectively. gcc uses the asm() instruction,
  15.     to emulate C++ constructors and destructors.
  16.  
  17.     Using this file you don't have *all* possibilities of
  18.     the locale.library. (No Locale or Language arguments are
  19.     supported when opening the catalog. However, these are
  20.     *very* rarely used, so this should be sufficient for most
  21.     applications.
  22. ****************************************************************/
  23.  
  24.  
  25. /*
  26.     Include files and compiler specific stuff
  27. */
  28. #include <exec/memory.h>
  29. #include <libraries/locale.h>
  30. #include <libraries/iffparse.h>
  31.  
  32. #include <proto/exec.h>
  33. #include <proto/dos.h>
  34. #include <proto/locale.h>
  35. #include <proto/utility.h>
  36. #include <proto/iffparse.h>
  37.  
  38. #include <stdlib.h>
  39. #include <string.h>
  40.  
  41.  
  42.  
  43. #include "Amster_cat.h"
  44.  
  45.  
  46. /*
  47.     Variables
  48. */
  49. struct FC_String Amster_Strings[365] = {
  50.     { (STRPTR) "Napster client", 0 },
  51.     { (STRPTR) "About Amster", 1 },
  52.     { (STRPTR) "<to be removed>", 2 },
  53.     { (STRPTR) "<to be replaced>", 3 },
  54.     { (STRPTR) "<to be removed>", 4 },
  55.     { (STRPTR) "<to be replaced>", 5 },
  56.     { (STRPTR) "<to be replaced>", 6 },
  57.     { (STRPTR) "<to be replaced>", 7 },
  58.     { (STRPTR) "<to be removed>", 8 },
  59.     { (STRPTR) "_OK", 9 },
  60.     { (STRPTR) "Warning!", 10 },
  61.     { (STRPTR) "Amster is still downloading and/or uploading\n"\
  62.     "some MP3's. Do you want to stop transfers?", 11 },
  63.     { (STRPTR) "_Yes|*_No", 12 },
  64.     { (STRPTR) "Select ARexx script to run...", 13 },
  65.     { (STRPTR) "Amster", 14 },
  66.     { (STRPTR) "?\000About...", 15 },
  67.     { (STRPTR) "About MUI...", 16 },
  68.     { (STRPTR) "Help...", 17 },
  69.     { (STRPTR) "H\000Hide", 18 },
  70.     { (STRPTR) "Q\000Quit", 19 },
  71.     { (STRPTR) "Library", 20 },
  72.     { (STRPTR) "O\000Open...", 21 },
  73.     { (STRPTR) "S\000Save", 22 },
  74.     { (STRPTR) "A\000Save as...", 23 },
  75.     { (STRPTR) "Settings", 24 },
  76.     { (STRPTR) "Icon Panel", 25 },
  77.     { (STRPTR) "MUI...", 26 },
  78.     { (STRPTR) "Configuration...", 27 },
  79.     { (STRPTR) "Save settings", 28 },
  80.     { (STRPTR) "Windows", 29 },
  81.     { (STRPTR) "1\000Debug", 30 },
  82.     { (STRPTR) "2\000Library", 31 },
  83.     { (STRPTR) "3\000Download", 32 },
  84.     { (STRPTR) "5\000Messages", 33 },
  85.     { (STRPTR) "6\000New chat window", 34 },
  86.     { (STRPTR) "ARexx", 35 },
  87.     { (STRPTR) "Execute script...", 36 },
  88.     { (STRPTR) "_Connect", 37 },
  89.     { (STRPTR) "_Disconnect", 38 },
  90.     { (STRPTR) "_Reconnect", 39 },
  91.     { (STRPTR) "Not connected to a server.", 40 },
  92.     { (STRPTR) "Connecting...", 41 },
  93.     { (STRPTR) "Connecting to %s...", 42 },
  94.     { (STRPTR) "Connection to %s failed.", 43 },
  95.     { (STRPTR) "Finding optimal server...", 44 },
  96.     { (STRPTR) "Failed to find optimal server.", 45 },
  97.     { (STRPTR) "%d songs in %d libraries (%d GB)", 46 },
  98.     { (STRPTR) "Song", 47 },
  99.     { (STRPTR) "Max.", 48 },
  100.     { (STRPTR) "_Search", 49 },
  101.     { (STRPTR) "\033c\033b-- Advanced Search Options --", 50 },
  102.     { (STRPTR) "Use", 51 },
  103.     { (STRPTR) "Reset", 52 },
  104.     { (STRPTR) "Line speed must be", 53 },
  105.     { (STRPTR) "Bitrate must be", 54 },
  106.     { (STRPTR) "Frequency must be", 55 },
  107.     { (STRPTR) "Unknown", 56 },
  108.     { (STRPTR) "14.4 Modem", 57 },
  109.     { (STRPTR) "28.8 Modem", 58 },
  110.     { (STRPTR) "33.6 Modem", 59 },
  111.     { (STRPTR) "56K Modem", 60 },
  112.     { (STRPTR) "ISDN 64K", 61 },
  113.     { (STRPTR) "ISDN 128K", 62 },
  114.     { (STRPTR) "Cable", 63 },
  115.     { (STRPTR) "DSL", 64 },
  116.     { (STRPTR) "T1", 65 },
  117.     { (STRPTR) "T3+", 66 },
  118.     { (STRPTR) "User", 67 },
  119.     { (STRPTR) "List all MP3 files shared by a single user", 68 },
  120.     { (STRPTR) "Browse", 69 },
  121.     { (STRPTR) "Result:", 70 },
  122.     { (STRPTR) "Not important", 71 },
  123.     { (STRPTR) "At least", 72 },
  124.     { (STRPTR) "Equal to", 73 },
  125.     { (STRPTR) "At best", 74 },
  126.     { (STRPTR) "Cl_ear", 75 },
  127.     { (STRPTR) "Clear a_ll", 76 },
  128.     { (STRPTR) "Do_wnload", 77 },
  129.     { (STRPTR) "Searching...", 78 },
  130.     { (STRPTR) "No files found.", 79 },
  131.     { (STRPTR) "1 file found.", 80 },
  132.     { (STRPTR) "%d files found.", 81 },
  133.     { (STRPTR) "Requesting list from user...", 82 },
  134.     { (STRPTR) "\033cSong", 83 },
  135.     { (STRPTR) "\033cSize", 84 },
  136.     { (STRPTR) "\033cTime", 85 },
  137.     { (STRPTR) "\033cUser", 86 },
  138.     { (STRPTR) "\033cLink", 87 },
  139.     { (STRPTR) "File", 88 },
  140.     { (STRPTR) "Bitrate", 89 },
  141.     { (STRPTR) "Frequency", 90 },
  142.     { (STRPTR) "MD5", 91 },
  143.     { (STRPTR) "\033cState", 92 },
  144.     { (STRPTR) "\033cCps", 93 },
  145.     { (STRPTR) "\033cTime", 94 },
  146.     { (STRPTR) "Amster Configuration", 95 },
  147.     { (STRPTR) "Error", 96 },
  148.     { (STRPTR) "You must be connected to change\n"\
  149.     "your e-mail address.", 97 },
  150.     { (STRPTR) "User", 98 },
  151.     { (STRPTR) "Options", 99 },
  152.     { (STRPTR) "Network", 100 },
  153.     { (STRPTR) "Events", 101 },
  154.     { (STRPTR) "Advanced", 102 },
  155.     { (STRPTR) "Username", 103 },
  156.     { (STRPTR) "Password", 104 },
  157.     { (STRPTR) "E-Mail", 105 },
  158.     { (STRPTR) "U_pdate", 106 },
  159.     { (STRPTR) "Connection", 107 },
  160.     { (STRPTR) "Download path", 108 },
  161.     { (STRPTR) "Select your download directory...", 109 },
  162.     { (STRPTR) "Clear list before new searches", 110 },
  163.     { (STRPTR) "Auto-connect on program startup", 111 },
  164.     { (STRPTR) "<to be deleted>", 112 },
  165.     { (STRPTR) "Startup", 113 },
  166.     { (STRPTR) "Exit", 114 },
  167.     { (STRPTR) "Connect", 115 },
  168.     { (STRPTR) "Disconnect", 116 },
  169.     { (STRPTR) "Download finished", 117 },
  170.     { (STRPTR) "Transfer error", 118 },
  171.     { (STRPTR) "MP3 player", 119 },
  172.     { (STRPTR) "Script", 120 },
  173.     { (STRPTR) "Select ARexx script...", 121 },
  174.     { (STRPTR) "Sound", 122 },
  175.     { (STRPTR) "Select sound file...", 123 },
  176.     { (STRPTR) "Test", 124 },
  177.     { (STRPTR) "Meta server", 125 },
  178.     { (STRPTR) "Amster gets MP3 server address from this\n"\
  179.     "server. You don't need to change it.", 126 },
  180.     { (STRPTR) "MP3 server", 127 },
  181.     { (STRPTR) "MP3 server address. If you want to get it from\n"\
  182.     "the meta server, leave this string empty.", 128 },
  183.     { (STRPTR) "Version", 129 },
  184.     { (STRPTR) "Listening port", 130 },
  185.     { (STRPTR) "\033rBehind firewall", 131 },
  186.     { (STRPTR) "_Save", 132 },
  187.     { (STRPTR) "_Use", 133 },
  188.     { (STRPTR) "_Cancel", 134 },
  189.     { (STRPTR) "Cannot save configuration!", 135 },
  190.     { (STRPTR) "Amster Debug", 136 },
  191.     { (STRPTR) "_Clear", 137 },
  192.     { (STRPTR) "Connected.", 138 },
  193.     { (STRPTR) "Login failed!", 139 },
  194.     { (STRPTR) "Logged in.", 140 },
  195.     { (STRPTR) "<to be removed>", 141 },
  196.     { (STRPTR) "Server is busy. Try again later.", 142 },
  197.     { (STRPTR) "Got '%s' from Napster.", 143 },
  198.     { (STRPTR) "Port number needed (hostname:port)!", 144 },
  199.     { (STRPTR) "Nickname already registered.", 145 },
  200.     { (STRPTR) "Amster Download", 146 },
  201.     { (STRPTR) "<to be replaced>", 147 },
  202.     { (STRPTR) "<to be replaced>", 148 },
  203.     { (STRPTR) "<to be replaced>", 149 },
  204.     { (STRPTR) "<to be replaced>", 150 },
  205.     { (STRPTR) "<to be replaced>", 151 },
  206.     { (STRPTR) "<to be replaced>", 152 },
  207.     { (STRPTR) "<to be replaced>", 153 },
  208.     { (STRPTR) "Play", 154 },
  209.     { (STRPTR) "_Abort", 155 },
  210.     { (STRPTR) "_Resume", 156 },
  211.     { (STRPTR) "Cleanup", 157 },
  212.     { (STRPTR) "Select filename to download...", 158 },
  213.     { (STRPTR) "Resume Information", 159 },
  214.     { (STRPTR) "\033cThe file '%s'\n"\
  215.     "already exists in your download directory.\n"\
  216.     "\n"\
  217.     "\033bLocal file size: \033n%ld\n"\
  218.     "\033bRemote file size: \033n%ld\n"\
  219.     "\n"\
  220.     "\033bLocal MD5 checksum:\n"\
  221.     "\033n%s\n"\
  222.     "\n"\
  223.     "\033bRemote MD5 checksum:\n"\
  224.     "\033n%s\n"\
  225.     "\n"\
  226.     "%s", 160 },
  227.     { (STRPTR) "«N/A»", 161 },
  228.     { (STRPTR) "File is already completely downloaded, or\n"\
  229.     "remote file is smaller than local file.", 162 },
  230.     { (STRPTR) "The files appear to be identical.\n"\
  231.     "Resuming should be safe.", 163 },
  232.     { (STRPTR) "The MD5 checksums of the files do not match.\n"\
  233.     "Resuming would destroy your file.", 164 },
  234.     { (STRPTR) "The file comment of the local file to resume\n"\
  235.     "does not contain any MD5 checksum.\n"\
  236.     "The files may not be identical.", 165 },
  237.     { (STRPTR) "R_esume anyway|_Rename|_Overwrite|*_Cancel", 166 },
  238.     { (STRPTR) "_Overwrite|_Rename|*_Cancel", 167 },
  239.     { (STRPTR) "*_Resume|R_ename|_Overwrite|_Cancel", 168 },
  240.     { (STRPTR) "Amster Messenger", 169 },
  241.     { (STRPTR) "You're not connected!", 170 },
  242.     { (STRPTR) "_Add", 171 },
  243.     { (STRPTR) "_Remove", 172 },
  244.     { (STRPTR) "Remove a_ll", 173 },
  245.     { (STRPTR) "Amster Library", 174 },
  246.     { (STRPTR) "Select files to add", 175 },
  247.     { (STRPTR) "Save library", 176 },
  248.     { (STRPTR) "Load library", 177 },
  249.     { (STRPTR) "Error adding '%s' (size: %ld, bitrate: %ld, frequency: %ld)", 178 },
  250.     { (STRPTR) "%ld songs (%ld %s)", 179 },
  251.     { (STRPTR) "kB", 180 },
  252.     { (STRPTR) "MB", 181 },
  253.     { (STRPTR) "GB", 182 },
  254.     { (STRPTR) "Cannot open %s V%d!\n", 183 },
  255.     { (STRPTR) "Cannot create mui app!\n", 184 },
  256.     { (STRPTR) "TCP/IP stack needed!", 185 },
  257.     { (STRPTR) "Network error.", 186 },
  258.     { (STRPTR) "recv() error!", 187 },
  259.     { (STRPTR) "Hostname lookup failed!", 188 },
  260.     { (STRPTR) "Socket() error!", 189 },
  261.     { (STRPTR) "Cannot connect!", 190 },
  262.     { (STRPTR) "N\000Navigator", 191 },
  263.     { (STRPTR) "Connect", 192 },
  264.     { (STRPTR) "T\000Connect to...", 193 },
  265.     { (STRPTR) "Reconnect", 194 },
  266.     { (STRPTR) "Disconnect", 195 },
  267.     { (STRPTR) "4\000Upload", 196 },
  268.     { (STRPTR) "L\000Last saved", 197 },
  269.     { (STRPTR) "Hz", 198 },
  270.     { (STRPTR) "kbps", 199 },
  271.     { (STRPTR) "Paths", 200 },
  272.     { (STRPTR) "\033ckbps", 201 },
  273.     { (STRPTR) "\033cHz", 202 },
  274.     { (STRPTR) "Logging into %s...", 203 },
  275.     { (STRPTR) "Connection to %s failed -- %s.", 204 },
  276.     { (STRPTR) "Uploading sharing library...", 205 },
  277.     { (STRPTR) "unknown error #%d", 206 },
  278.     { (STRPTR) "network is down", 207 },
  279.     { (STRPTR) "network is unreachable", 208 },
  280.     { (STRPTR) "connection reset by peer", 209 },
  281.     { (STRPTR) "operation timed out", 210 },
  282.     { (STRPTR) "connection refused", 211 },
  283.     { (STRPTR) "broken pipe", 212 },
  284.     { (STRPTR) "Resume", 213 },
  285.     { (STRPTR) "%ld songs (%s %s)", 214 },
  286.     { (STRPTR) "Requested file was not found in sharing database.\n", 215 },
  287.     { (STRPTR) "User '%s' requested file '%s'.\n", 216 },
  288.     { (STRPTR) "File '%s' already exists in library.\n", 217 },
  289.     { (STRPTR) "Add re_cursive", 218 },
  290.     { (STRPTR) "_Play", 219 },
  291.     { (STRPTR) "Select directory to add", 220 },
  292.     { (STRPTR) "File '%s' cannot be shared (illegal characters in filename)", 221 },
  293.     { (STRPTR) "File '%s' cannot be shared (invalid extension)", 222 },
  294.     { (STRPTR) "At least one file failed to be added to library.\n"\
  295.     "Please consult the debug window for details.", 223 },
  296.     { (STRPTR) "Account", 224 },
  297.     { (STRPTR) "The username to login with.", 225 },
  298.     { (STRPTR) "Your password. Don't forget it, once\n"\
  299.     "you have registered your account.", 226 },
  300.     { (STRPTR) "Your e-mail address.", 227 },
  301.     { (STRPTR) "Click this button to update your\n"\
  302.     "e-mail address on the server.", 228 },
  303.     { (STRPTR) "Choose your connection speed from this\n"\
  304.     "list. Be honest with your choice.", 229 },
  305.     { (STRPTR) "Directory where downloaded files\n"\
  306.     "will be stored.", 230 },
  307.     { (STRPTR) "Miscellaneous", 231 },
  308.     { (STRPTR) "Always ask filename", 232 },
  309.     { (STRPTR) "Add downloaded files to library", 233 },
  310.     { (STRPTR) "Auto-save library on program exit", 234 },
  311.     { (STRPTR) "Lamps", 235 },
  312.     { (STRPTR) "Lamp class to use as link speed\n"\
  313.     "indicator for each search result.", 236 },
  314.     { (STRPTR) "Lamp", 237 },
  315.     { (STRPTR) "TWFmultiLED", 238 },
  316.     { (STRPTR) "Server list", 239 },
  317.     { (STRPTR) "Don't remember", 240 },
  318.     { (STRPTR) "Save on exit", 241 },
  319.     { (STRPTR) "Cache servers", 242 },
  320.     { (STRPTR) "\033bDon't remember:\n"\
  321.     "\033nDo not save to file.\n"\
  322.     "\n"\
  323.     "\033bSave on exit:\n"\
  324.     "\033nSave to file on program exit.\n"\
  325.     "\n"\
  326.     "\033bCache servers:\n"\
  327.     "\033nAdd new servers to the list and\n"\
  328.     "save it on program exit.", 243 },
  329.     { (STRPTR) "Filename length", 244 },
  330.     { (STRPTR) "Max. filename length. Files exceeding\n"\
  331.     "this limit will be truncated and terminated\n"\
  332.     "with the .mp3 extension.", 245 },
  333.     { (STRPTR) "Upload finished", 246 },
  334.     { (STRPTR) "Command", 247 },
  335.     { (STRPTR) "AmigaDOS command used to play a file.\n"\
  336.     "%f will be replaced with the filename.\n"\
  337.     "Example:\n"\
  338.     "\n"\
  339.     "RexxC:RX Rexx/PlayAmigaAmp.rexx \"%f\"", 248 },
  340.     { (STRPTR) "Network", 249 },
  341.     { (STRPTR) "TCP port to use for incoming connections\n"\
  342.     "(for both downloads and uploads) when the\n"\
  343.     "other user is behind a firewall.", 250 },
  344.     { (STRPTR) "Only make outgoing connections, so you\n"\
  345.     "can download and share (upload) files\n"\
  346.     "from behind a firewall.", 251 },
  347.     { (STRPTR) "Transfer", 252 },
  348.     { (STRPTR) "Concurrent downloads", 253 },
  349.     { (STRPTR) "This is the maximum number of files\n"\
  350.     "to download at the same time. The rest\n"\
  351.     "will be queued and downloaded later.", 254 },
  352.     { (STRPTR) "Concurrent uploads", 255 },
  353.     { (STRPTR) "This is the maximum number of files\n"\
  354.     "to upload at the same time. Requests\n"\
  355.     "coming in when the queue if full will\n"\
  356.     "be rejected.", 256 },
  357.     { (STRPTR) "Unlimited", 257 },
  358.     { (STRPTR) "Pri", 258 },
  359.     { (STRPTR) "\033bCaution!\n"\
  360.     "\033nThis sets the task priority. Only change this\n"\
  361.     "to anything but 0 if you know what you are doing.", 259 },
  362.     { (STRPTR) "Queue limit retries", 260 },
  363.     { (STRPTR) "Number of times Amster retry download\n"\
  364.     "request before giving up.", 261 },
  365.     { (STRPTR) "Delay between retries", 262 },
  366.     { (STRPTR) "Number of seconds between each retry.", 263 },
  367.     { (STRPTR) "Failed to open main window!\n", 264 },
  368.     { (STRPTR) "Account successfully registered.", 265 },
  369.     { (STRPTR) "I/O error with file '%s'%s", 266 },
  370.     { (STRPTR) "Homepage <http://home.worldonline.dk/~jlaur/amiga/amster>", 267 },
  371.     { (STRPTR) "Mailing list <http://www.egroups.com/group/amster>", 268 },
  372.     { (STRPTR) "Unofficial Napster FAQ <http://napster.cjb.net>", 269 },
  373.     { (STRPTR) "\033cCopyright © 1999-2000 by Gürer Özen\n"\
  374.     "Copyright © 2000 by Jacob Laursen\n"\
  375.     "\n"\
  376.     "MUI is copyright © by Stefan Stuntz\n"\
  377.     "NList.mcc is copyright © by Gilles Masson\n"\
  378.     "Lamp.mcc is copyright © by Maik Schreiber\n"\
  379.     "TWFmultiLED.mcc is copyright © by Christopher Page", 270 },
  380.     { (STRPTR) "\033c\033bAmster was brought to you by...\033n\n"\
  381.     "\n"\
  382.     "\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
  383.     "· Gürer Özen <palpa@linuxfan.com>\n"\
  384.     "\033r\033nCoding\n"\
  385.     "\n"\
  386.     "\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
  387.     "\033r\033nDocumentation\n"\
  388.     "\n"\
  389.     "\033l\033i· Llorenç Grau <llor69@olivet.com>\n"\
  390.     "\033r\033nCatalan translation\n"\
  391.     "\n"\
  392.     "\033l\033i· Vit Sindlar <sindlarv@voskop.cz>\n"\
  393.     "\033r\033nCzech translation\n"\
  394.     "\n"\
  395.     "\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
  396.     "\033r\033nDanish translation\n"\
  397.     "\n"\
  398.     "\033l\033i· Frank Mosch <frank.mosch@pandora.be>\n"\
  399.     "· Guno Heitman <Guno@cable.A2000.nl>\n"\
  400.     "\033r\033nDutch translation\n"\
  401.     "\n"\
  402.     "\033l\033i· Janne Karppanen <janne.karppanen@quicknet.inet.fi>\n"\
  403.     "· Samppa Rönkä <eksotic@dlc.fi>\n"\
  404.     "\033r\033nFinnish translation\n"\
  405.     "\n"\
  406.     "\033l\033i· Jerome Chesnot <jchesnot@noname.fr>\n"\
  407.     "\033r\033nFrench translation\n"\
  408.     "\n"\
  409.     "\033l\033i· Heiko Hayn <Smeagel@gmx.net>\n"\
  410.     "· Sönke Tesch <soenke@kino-fahrplan.de>\n"\
  411.     "\033r\033nGerman translation\n"\
  412.     "\n"\
  413.     "\033l\033i· Álmos Rajnai <racs@fs2.bdtf.hu>\n"\
  414.     "· Péter Horváth <pcpince@syneco.hu>\n"\
  415.     "\033r\033nHungarian translation\n"\
  416.     "\n"\
  417.     "\033l\033i· Francesco Celli <mc3510@mclink.it>\n"\
  418.     "· Francesco Mancuso <mcfrank@mediatel.it>\n"\
  419.     "\033r\033nItalian translation\n"\
  420.     "\n"\
  421.     "\033l\033i· Øyvind Falch <oyvind.falch@triumph.no>\n"\
  422.     "\033r\033nNorwegian translation\n"\
  423.     "\n"\
  424.     "\033l\033i· Rúben Alvim <alvim_r@yahoo.com>\n"\
  425.     "· Joel Alvim <mindwalker@mail.telepac.pt>\n"\
  426.     "\033r\033nPortuguese translation\n"\
  427.     "\n"\
  428.     "\033l\033i· Oleg Sergeev <bigblack@mail.lanck.net>\n"\
  429.     "· Andrew Boyarintsev <ntrs@redline.ru>\n"\
  430.     "\033r\033nRussian translation\n"\
  431.     "\n"\
  432.     "\033l\033i· Uros Bogataj <urosb@technologist.com>\n"\
  433.     "· Damir Arh <damir.arh@telesat.si>\n"\
  434.     "\033r\033nSlovenian translation\n"\
  435.     "\n"\
  436.     "\033l\033i· Javier de las Rivas <javierdlr@retemail.es>\n"\
  437.     "· Pablo Peskin <Pablo@peskin.com>\n"\
  438.     "\033r\033nSpanish translation\n"\
  439.     "\n"\
  440.     "\033l\033i· Fredrik Söderberg <mcdrill@hem.passagen.se>\n"\
  441.     "· Linus Andersson <linus_79@lover-boy.com>\n"\
  442.     "\033r\033nSwedish translation", 271 },
  443.     { (STRPTR) "\033c\033bThanks to...\033n\n"\
  444.     "\n"\
  445.     "\033l\033i· L. Peter Deutsch <ghost@aladdin.com>\n"\
  446.     "\033r\033nFor the MD5 algorithm implementation\n"\
  447.     "\n"\
  448.     "\033l\033i· Roger Clark <kaedric@texas.net>\n"\
  449.     "\033r\033nFor helping out in many ways\n"\
  450.     "\n"\
  451.     "\033l\033i· Johnny T. Nielsen <draco@mail1.stofanet.dk>\n"\
  452.     "\033r\033nFor help with the thread code\n"\
  453.     "\n"\
  454.     "\033l\033i· Luca 'Hexaae' Longone <llong@tin.it>\n"\
  455.     "\033r\033nFor the AppIcons and DeliTracker script\n"\
  456.     "\n"\
  457.     "\033cAnd to all the brave betatesters!", 272 },
  458.     { (STRPTR) "Amster Upload", 273 },
  459.     { (STRPTR) "_Play", 274 },
  460.     { (STRPTR) "_Abort", 275 },
  461.     { (STRPTR) "_Cleanup", 276 },
  462.     { (STRPTR) "Queued", 277 },
  463.     { (STRPTR) "Waiting (limit is %d)...", 278 },
  464.     { (STRPTR) "Preparing...", 279 },
  465.     { (STRPTR) "Connecting...", 280 },
  466.     { (STRPTR) "Requesting...", 281 },
  467.     { (STRPTR) "Initializing...", 282 },
  468.     { (STRPTR) "Downloading...", 283 },
  469.     { (STRPTR) "Uploading...", 284 },
  470.     { (STRPTR) "\033bFinished", 285 },
  471.     { (STRPTR) "\033bAborted", 286 },
  472.     { (STRPTR) "Stalled", 287 },
  473.     { (STRPTR) "\033bError", 288 },
  474.     { (STRPTR) "\033bCan't open file (%ld)", 289 },
  475.     { (STRPTR) "\033bRead error (%ld)", 290 },
  476.     { (STRPTR) "\033bWrite error (%ld)", 291 },
  477.     { (STRPTR) "\033bNet error (%ld)", 292 },
  478.     { (STRPTR) "\033bTimed out", 293 },
  479.     { (STRPTR) "\033bConnection refused", 294 },
  480.     { (STRPTR) "\033bConnection reset", 295 },
  481.     { (STRPTR) "\033bBroken pipe", 296 },
  482.     { (STRPTR) "\033bUser logged out", 297 },
  483.     { (STRPTR) "\033bFile not found", 298 },
  484.     { (STRPTR) "\033bInvalid request", 299 },
  485.     { (STRPTR) "\033bTeaser", 300 },
  486.     { (STRPTR) "\033bBusy", 301 },
  487.     { (STRPTR) "Connect to...", 302 },
  488.     { (STRPTR) "Server", 303 },
  489.     { (STRPTR) "Username", 304 },
  490.     { (STRPTR) "Password", 305 },
  491.     { (STRPTR) "Register account", 306 },
  492.     { (STRPTR) "_Connect", 307 },
  493.     { (STRPTR) "Amster Navigator", 308 },
  494.     { (STRPTR) "Server", 309 },
  495.     { (STRPTR) "Comment", 310 },
  496.     { (STRPTR) "_Connect", 311 },
  497.     { (STRPTR) "_Add", 312 },
  498.     { (STRPTR) "_Remove", 313 },
  499.     { (STRPTR) "_Update", 314 },
  500.     { (STRPTR) "\033bDO NOT PRESS THIS BUTTON!", 315 },
  501.     { (STRPTR) "-New server-", 316 },
  502.     { (STRPTR) "\033bServer", 317 },
  503.     { (STRPTR) "\033bLast online", 318 },
  504.     { (STRPTR) "\033bComment", 319 },
  505.     { (STRPTR) "\033bPing", 320 },
  506.     { (STRPTR) "Spawn external MP3 player to play selected\n"\
  507.     "file. You can set up your favourite player\n"\
  508.     "in the events section of the configuration\n"\
  509.     "window.", 321 },
  510.     { (STRPTR) "Abort the selected transfer.", 322 },
  511.     { (STRPTR) "Attempt to resume download of selected file.\n"\
  512.     "A requester will pop up asking for confirmation.", 323 },
  513.     { (STRPTR) "Flush all finished, aborted and\n"\
  514.     "unsuccesful transfers from list.", 324 },
  515.     { (STRPTR) "Global message from %s", 325 },
  516.     { (STRPTR) "Error parsing '%s' line #%ld", 326 },
  517.     { (STRPTR) "\033bError:\033n %s", 327 },
  518.     { (STRPTR) "\033bLogin error:\033n %s", 328 },
  519.     { (STRPTR) "User %s signed off", 329 },
  520.     { (STRPTR) "Warning: Lamp.mcc V11.1+ not found. Running without it.", 330 },
  521.     { (STRPTR) "\033b«Info»", 331 },
  522.     { (STRPTR) "\033b«WhoIs»", 332 },
  523.     { (STRPTR) "\033b«WhoWas»", 333 },
  524.     { (STRPTR) "User: %s (level: %s) - online: %d:%02d:%02d (%s)", 334 },
  525.     { (STRPTR) "Channels: %s", 335 },
  526.     { (STRPTR) "Shares: %d, downloads: %d, uploads: %d", 336 },
  527.     { (STRPTR) "Client: %s, link: %s", 337 },
  528.     { (STRPTR) "User: %s (level: %s) - last seen: %02d/%02d/%d %02d:%02d:%02d", 338 },
  529.     { (STRPTR) "7\000Hotlist", 339 },
  530.     { (STRPTR) "Not connected", 340 },
  531.     { (STRPTR) "Auto-cleanup successful uploads", 341 },
  532.     { (STRPTR) "\033bNot requested", 342 },
  533.     { (STRPTR) "Count", 343 },
  534.     { (STRPTR) "Amster Chat", 344 },
  535.     { (STRPTR) "[None joined]", 345 },
  536.     { (STRPTR) "You are not connected.", 346 },
  537.     { (STRPTR) "No channel joined in this window.", 347 },
  538.     { (STRPTR) "You have joined channel %s.", 348 },
  539.     { (STRPTR) "%s has joined this channel (shares: %d, line: %s).", 349 },
  540.     { (STRPTR) "You have left channel %s.", 350 },
  541.     { (STRPTR) "%s has left this channel.", 351 },
  542.     { (STRPTR) "Amster Hotlist", 352 },
  543.     { (STRPTR) "Nick", 353 },
  544.     { (STRPTR) "Status", 354 },
  545.     { (STRPTR) "Link", 355 },
  546.     { (STRPTR) "_Add", 356 },
  547.     { (STRPTR) "_Remove", 357 },
  548.     { (STRPTR) "Results", 358 },
  549.     { (STRPTR) "Amster Channel List", 359 },
  550.     { (STRPTR) "Name", 360 },
  551.     { (STRPTR) "Users", 361 },
  552.     { (STRPTR) "Topic", 362 },
  553.     { (STRPTR) "_Join", 363 },
  554.     { (STRPTR) "_Update", 364 }
  555. };
  556.  
  557. STATIC struct Catalog *AmsterCatalog = NULL;
  558. #ifdef LOCALIZE_V20
  559. STATIC STRPTR AmsterStrings = NULL;
  560. STATIC ULONG AmsterStringsSize;
  561. #endif
  562.  
  563.  
  564. #if defined(_DCC)
  565. STATIC __autoexit VOID _STDCloseAmsterCatalog(VOID)
  566. #elif defined(__SASC)
  567. VOID _STDCloseAmsterCatalog(VOID)
  568. #elif defined(__GNUC__)
  569. STATIC VOID _STDCloseAmsterCatalog(VOID)
  570. #else
  571. VOID CloseAmsterCatalog(VOID)
  572. #endif
  573.  
  574. {
  575.     if (AmsterCatalog) {
  576.     CloseCatalog(AmsterCatalog);
  577.     }
  578. #ifdef LOCALIZE_V20
  579.     if (AmsterStrings) {
  580.     FreeMem(AmsterStrings, AmsterStringsSize);
  581.     }
  582. #endif
  583. }
  584.  
  585.  
  586. #if defined(_DCC)
  587. STATIC __autoinit VOID _STIOpenAmsterCatalog(VOID)
  588. #elif defined(__SASC)
  589. VOID _STIOpenAmsterCatalog(VOID)
  590. #elif defined(__GNUC__)
  591. VOID _STIOpenAmsterCatalog(VOID)
  592. #else
  593. VOID OpenAmsterCatalog(VOID)
  594. #endif
  595.  
  596. {
  597.     if (LocaleBase) {
  598.     if ((AmsterCatalog = OpenCatalog(NULL, (STRPTR) "Amster.catalog",
  599.                      OC_BuiltInLanguage, "english",
  600.                      OC_Version, 0,
  601.                      TAG_DONE))) {
  602.         struct FC_String *fc;
  603.         int i;
  604.  
  605.         for (i = 0, fc = Amster_Strings;  i < 365;  i++, fc++) {
  606.          fc->msg = GetCatalogStr(AmsterCatalog, fc->id, (STRPTR) fc->msg);
  607.         }
  608.     }
  609.     }
  610. }
  611.  
  612. #if defined(__GNUC__)
  613. __asm ("  .text;  .stabs \"___CTOR_LIST__\",22,0,0,__STIOpenAmsterCatalog");
  614. __asm ("  .text;  .stabs \"___DTOR_LIST__\",22,0,0,__STDCloseAmsterCatalog");
  615. #endif
  616.  
  617.  
  618.  
  619. #ifdef LOCALIZE_V20
  620. VOID InitAmsterCatalog(STRPTR language)
  621.  
  622. {
  623.     struct IFFHandle *iffHandle;
  624.  
  625.     /*
  626.     **  Use iffparse.library only, if we need to.
  627.     */
  628.     if (LocaleBase  ||  !IFFParseBase  ||  !language  ||
  629.     Stricmp(language, "english") == 0) {
  630.     return;
  631.     }
  632.  
  633.     if ((iffHandle = AllocIFF())) {
  634.     char path[128]; /* Enough to hold 4 path items (dos.library 3.1)    */
  635.     strcpy(path, "PROGDIR:Catalogs");
  636.     AddPart((STRPTR) path, language, sizeof(path));
  637.     AddPart((STRPTR) path, "Amster.catalog", sizeof(path));
  638.     if (!(iffHandle->iff_Stream = Open((STRPTR) path, MODE_OLDFILE))) {
  639.         strcpy(path, "LOCALE:Catalogs");
  640.         AddPart((STRPTR) path, language, sizeof(path));
  641.         AddPart((STRPTR) path, language, sizeof(path));
  642.         iffHandle->iff_Stream = Open((STRPTR) path, MODE_OLDFILE);
  643.     }
  644.  
  645.     if (iffHandle->iff_Stream) {
  646.         InitIFFasDOS(iffHandle);
  647.         if (!OpenIFF(iffHandle, IFFF_READ)) {
  648.         if (!PropChunk(iffHandle, MAKE_ID('C','T','L','G'),
  649.                    MAKE_ID('S','T','R','S'))) {
  650.             struct StoredProperty *sp;
  651.             int error;
  652.  
  653.             for (;;) {
  654.             if ((error = ParseIFF(iffHandle, IFFPARSE_STEP))
  655.                    ==  IFFERR_EOC) {
  656.                 continue;
  657.             }
  658.             if (error) {
  659.                 break;
  660.             }
  661.  
  662.             if ((sp = FindProp(iffHandle, MAKE_ID('C','T','L','G'),
  663.                        MAKE_ID('S','T','R','S')))) {
  664.                 /*
  665.                 **  Check catalog and calculate the needed
  666.                 **  number of bytes.
  667.                 **  A catalog string consists of
  668.                 **      ID (LONG)
  669.                 **      Size (LONG)
  670.                 **      Bytes (long word padded)
  671.                 */
  672.                 LONG bytesRemaining;
  673.                 LONG *ptr;
  674.  
  675.                 AmsterStringsSize = 0;
  676.                 bytesRemaining = sp->sp_Size;
  677.                 ptr = (LONG *) sp->sp_Data;
  678.  
  679.                 while (bytesRemaining > 0) {
  680.                 LONG skipSize, stringSize;
  681.  
  682.                 ptr++;                  /*  Skip ID     */
  683.                 stringSize = *ptr++;
  684.                 skipSize = ((stringSize+3) >> 2);
  685.  
  686.                 AmsterStringsSize += stringSize+1;  /*  NUL */
  687.                 bytesRemaining -= 8 + (skipSize << 2);
  688.                 ptr += skipSize;
  689.                 }
  690.  
  691.                 if (!bytesRemaining  &&
  692.                 (AmsterStrings = AllocMem(AmsterStringsSize, MEMF_ANY))) {
  693.                 STRPTR sptr;
  694.  
  695.                 bytesRemaining = sp->sp_Size;
  696.                 ptr = (LONG *) sp->sp_Data;
  697.                 sptr = AmsterStrings;
  698.  
  699.                 while (bytesRemaining) {
  700.                     LONG skipSize, stringSize, id;
  701.                     struct FC_String *fc;
  702.                     int i;
  703.  
  704.                     id = *ptr++;
  705.                     stringSize = *ptr++;
  706.                     skipSize = ((stringSize+3) >> 2);
  707.  
  708.                     CopyMem(ptr, sptr, stringSize);
  709.                     bytesRemaining -= 8 + (skipSize << 2);
  710.                     ptr += skipSize;
  711.  
  712.                     for (i = 0, fc = Amster_Strings;  i < 365;  i++, fc++) {
  713.                     if (fc->id == id) {
  714.                         fc->msg = sptr;
  715.                     }
  716.                     }
  717.  
  718.                     sptr += stringSize;
  719.                     *sptr++ = '\0';
  720.                 }
  721.                 }
  722.                 break;
  723.             }
  724.             }
  725.         }
  726.         CloseIFF(iffHandle);
  727.         }
  728.         Close(iffHandle->iff_Stream);
  729.     }
  730.     FreeIFF(iffHandle);
  731.     }
  732. }
  733. #endif
  734.